﻿
using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Data.Objects.DataClasses;

namespace T4MetaDataTemplate
{
	[MetadataType(typeof(ApplicantMetadata))]
	public partial class Applicant
	{
		internal sealed class ApplicantMetadata
		{
		
			[Required(ErrorMessage="Id is required")]
    		public Int32 Id { get; set; }

			[Required(ErrorMessage="User is required")]
    		public Guid UserID { get; set; }

			[Required(ErrorMessage="First Name is required")]
			[StringLength(25)]
    		public String FirstName { get; set; }

			[StringLength(25)]
    		public String MiddleName { get; set; }

			[Required(ErrorMessage="Last Name is required")]
			[StringLength(25)]
    		public String LastName { get; set; }

			[Required(ErrorMessage="Home Phone is required")]
			[StringLength(15)]
			[DataType(DataType.PhoneNumber)]
    		public String HomePhone { get; set; }

			[StringLength(15)]
			[DataType(DataType.PhoneNumber)]
    		public String MobilePhone { get; set; }

			[Required(ErrorMessage="City is required")]
			[StringLength(50)]
    		public String City { get; set; }

			[Required(ErrorMessage="Zip is required")]
    		public Int32 Zip { get; set; }

			[Required(ErrorMessage="State is required")]
    		public Int32 StateId { get; set; }

			[StringLength(100)]
			[DataType(DataType.EmailAddress)]
    		public String Email { get; set; }

			[Required(ErrorMessage="Application is required")]
    		public Int32 ApplicationId { get; set; }

    		public EntityCollection<State> State { get; set; }

    		public EntityCollection<Application> Application { get; set; }

		}
	}
	
	[MetadataType(typeof(ApplicationMetadata))]
	public partial class Application
	{
		internal sealed class ApplicationMetadata
		{
		
			[Required(ErrorMessage="Id is required")]
    		public Int32 Id { get; set; }

			[Required(ErrorMessage="Position Info is required")]
    		public Int32 PositionInfoId { get; set; }

			[Required(ErrorMessage="Personal Info is required")]
    		public Int32 PersonalInfoId { get; set; }

			[Required(ErrorMessage="Education is required")]
    		public Int32 EducationId { get; set; }

			[Required(ErrorMessage="Experience is required")]
    		public Int32 ExperienceId { get; set; }

			[Required(ErrorMessage="Application Number is required")]
			[StringLength(100)]
    		public String ApplicationNumber { get; set; }

			[Required(ErrorMessage="Application Date is required")]
			[DataType(DataType.DateTime)]
    		public DateTime ApplicationDate { get; set; }

    		public EntityCollection<PositionInfo> PositionInfo { get; set; }

    		public EntityCollection<PersonalInfo> PersonalInfo { get; set; }

    		public EntityCollection<Education> Education { get; set; }

    		public EntityCollection<Experience> Experience { get; set; }

    		public EntityCollection<Reference> References { get; set; }

    		public EntityCollection<Employment> Employment { get; set; }

		}
	}
	
	[MetadataType(typeof(BranchMetadata))]
	public partial class Branch
	{
		internal sealed class BranchMetadata
		{
		
			[Required(ErrorMessage="Id is required")]
    		public Int32 Id { get; set; }

			[Required(ErrorMessage="Title is required")]
			[StringLength(50)]
    		public String Title { get; set; }

			[Required(ErrorMessage="Number is required")]
			[StringLength(5)]
    		public String Number { get; set; }

		}
	}
	
	[MetadataType(typeof(EducationMetadata))]
	public partial class Education
	{
		internal sealed class EducationMetadata
		{
		
			[Required(ErrorMessage="Id is required")]
    		public Int32 Id { get; set; }

			[StringLength(50)]
    		public String HighSchoolName { get; set; }

			[StringLength(50)]
    		public String HighSchoolCity { get; set; }

			[StringLength(50)]
    		public String UndergraduateSchoolName { get; set; }

			[StringLength(50)]
    		public String UndergraduateSchoolCity { get; set; }

    		public Int32 UndergraduateSchoolYearsOfStudy { get; set; }

			[StringLength(250)]
    		public String UndergraduateSchoolDegree { get; set; }

    		public Boolean UndergraduateSchoolDegreeAwarded { get; set; }

			[StringLength(50)]
    		public String GraduateSchoolName { get; set; }

			[StringLength(50)]
    		public String GraduateSchoolCity { get; set; }

    		public Int32 GraduateSchoolYearsOfStudy { get; set; }

			[StringLength(250)]
    		public String GraduateSchoolDegree { get; set; }

    		public Boolean GraduateSchoolDegreeAwarded { get; set; }

			[StringLength(50)]
    		public String OtherSchoolName { get; set; }

			[StringLength(50)]
    		public String OtherSchoolCity { get; set; }

    		public Int32 OtherSchoolYearsOfStudy { get; set; }

			[StringLength(250)]
    		public String OtherSchoolDegree { get; set; }

    		public Boolean OtherSchoolDegreeAwarded { get; set; }

    		public String SpecializedTraining { get; set; }

    		public String MilitaryJobRelatedTraining { get; set; }

    		public Int32 HighSchoolStateId { get; set; }

    		public Int32 UndergraduateSchoolStateId { get; set; }

    		public Int32 GraduateSchoolStateId { get; set; }

    		public Int32 OtherSchoolStateId { get; set; }

    		public Boolean HighSchoolDiplomaAwarded { get; set; }

    		public EntityCollection<State> HighSchoolState { get; set; }

    		public EntityCollection<State> UndergraduateSchoolState { get; set; }

    		public EntityCollection<State> GraduateSchoolState { get; set; }

    		public EntityCollection<State> OtherSchoolState { get; set; }

		}
	}
	
	[MetadataType(typeof(EmploymentMetadata))]
	public partial class Employment
	{
		internal sealed class EmploymentMetadata
		{
		
			[Required(ErrorMessage="Id is required")]
    		public Int32 Id { get; set; }

			[Required(ErrorMessage="Company Name is required")]
			[StringLength(250)]
    		public String CompanyName { get; set; }

			[Required(ErrorMessage="Supervisor is required")]
			[StringLength(250)]
    		public String Supervisor { get; set; }

			[StringLength(100)]
			[DataType(DataType.EmailAddress)]
    		public String EmailAddress { get; set; }

			[Required(ErrorMessage="Phone Number is required")]
			[StringLength(15)]
			[DataType(DataType.PhoneNumber)]
    		public String PhoneNumber { get; set; }

			[DataType(DataType.DateTime)]
    		public DateTime DateStart { get; set; }

			[DataType(DataType.DateTime)]
    		public DateTime DateEnd { get; set; }

			[Required(ErrorMessage="Reason For Leaving is required")]
			[StringLength(1000)]
    		public String ReasonForLeaving { get; set; }

		}
	}
	
	[MetadataType(typeof(EquipmentMetadata))]
	public partial class Equipment
	{
		internal sealed class EquipmentMetadata
		{
		
			[Required(ErrorMessage="Id is required")]
    		public Int32 Id { get; set; }

			[Required(ErrorMessage="Title is required")]
			[StringLength(250)]
    		public String Title { get; set; }

		}
	}
	
	[MetadataType(typeof(ExperienceMetadata))]
	public partial class Experience
	{
		internal sealed class ExperienceMetadata
		{
		
			[Required(ErrorMessage="Id is required")]
    		public Int32 Id { get; set; }

    		public String AdditionalInformation { get; set; }

    		public Int32 TypingWordsPerMinute { get; set; }

    		public EntityCollection<Equipment> Equipment { get; set; }

    		public EntityCollection<Industry> Industries { get; set; }

		}
	}
	
	[MetadataType(typeof(IndustryMetadata))]
	public partial class Industry
	{
		internal sealed class IndustryMetadata
		{
		
			[Required(ErrorMessage="Id is required")]
    		public Int32 Id { get; set; }

			[Required(ErrorMessage="Title is required")]
			[StringLength(250)]
    		public String Title { get; set; }

		}
	}
	
	[MetadataType(typeof(PersonalInfoMetadata))]
	public partial class PersonalInfo
	{
		internal sealed class PersonalInfoMetadata
		{
		
			[Required(ErrorMessage="Id is required")]
    		public Int32 Id { get; set; }

			[Required(ErrorMessage="Can Travel is required")]
    		public Boolean CanTravel { get; set; }

			[Required(ErrorMessage="Contact Time is required")]
			[StringLength(15)]
    		public String ContactTime { get; set; }

			[Required(ErrorMessage="Contact Method is required")]
			[StringLength(15)]
    		public String ContactMethod { get; set; }

    		public Boolean CurrentlyEmployed { get; set; }

			[Required(ErrorMessage="Contact Employer is required")]
    		public Boolean ContactEmployer { get; set; }

			[DataType(DataType.DateTime)]
    		public DateTime DateAvailable { get; set; }

    		public Boolean EmployableInUSA { get; set; }

			[StringLength(250)]
    		public String LicenseNumber { get; set; }

			[StringLength(250)]
    		public String LicensingEntity { get; set; }

			[DataType(DataType.DateTime)]
    		public DateTime LicenseExpirationDate { get; set; }

			[Required(ErrorMessage="Salary Range is required")]
			[StringLength(250)]
    		public String SalaryRange { get; set; }

			[Required(ErrorMessage="Work Type is required")]
			[StringLength(15)]
    		public String WorkType { get; set; }

		}
	}
	
	[MetadataType(typeof(PositionMetadata))]
	public partial class Position
	{
		internal sealed class PositionMetadata
		{
		
			[Required(ErrorMessage="Id is required")]
    		public Int32 Id { get; set; }

			[Required(ErrorMessage="Title is required")]
			[StringLength(50)]
    		public String Title { get; set; }

			[StringLength(1000)]
    		public String ExperienceQuestion { get; set; }

		}
	}
	
	[MetadataType(typeof(PositionInfoMetadata))]
	public partial class PositionInfo
	{
		internal sealed class PositionInfoMetadata
		{
		
			[Required(ErrorMessage="Id is required")]
    		public Int32 Id { get; set; }

			[Required(ErrorMessage="Branch is required")]
    		public Int32 BranchId { get; set; }

			[Required(ErrorMessage="Position is required")]
    		public Int32 PositionId { get; set; }

    		public String YearsOfExperience { get; set; }

    		public EntityCollection<Branch> Branch { get; set; }

    		public EntityCollection<Position> Position { get; set; }

		}
	}
	
	[MetadataType(typeof(ReferenceMetadata))]
	public partial class Reference
	{
		internal sealed class ReferenceMetadata
		{
		
			[Required(ErrorMessage="Id is required")]
    		public Int32 Id { get; set; }

			[Required(ErrorMessage="Name is required")]
			[StringLength(250)]
    		public String Name { get; set; }

			[Required(ErrorMessage="Phone Number is required")]
			[StringLength(15)]
			[DataType(DataType.PhoneNumber)]
    		public String PhoneNumber { get; set; }

			[Required(ErrorMessage="Email Address is required")]
			[StringLength(100)]
			[DataType(DataType.EmailAddress)]
    		public String EmailAddress { get; set; }

			[Required(ErrorMessage="Relationship is required")]
			[StringLength(250)]
    		public String Relationship { get; set; }

		}
	}
	
	[MetadataType(typeof(StateMetadata))]
	public partial class State
	{
		internal sealed class StateMetadata
		{
		
			[Required(ErrorMessage="Id is required")]
    		public Int32 Id { get; set; }

			[Required(ErrorMessage="Abbreviation is required")]
    		public String Abbreviation { get; set; }

			[Required(ErrorMessage="Title is required")]
    		public String Title { get; set; }

		}
	}
	
	
}

